package catalogo.vistas;

import java.io.IOException;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.primefaces.component.paginator.NextPageLinkRenderer;

import catalogo.entidades.Receta;
import catalogo.entidades.TipoReceta;
import catalogo.entidades.Usuario;
import catalogo.servicios.OrigenServicio;
import catalogo.servicios.RecetaServicio;
import catalogo.servicios.TipoRecetaServicio;
import catalogo.servicios.UsuarioServicio;

@ManagedBean(name = "buscadorView")
@ViewScoped
public class BuscadorRecetaBean implements Serializable {
	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{RecetaServicio}")
	private RecetaServicio servicioReceta;

	@ManagedProperty("#{TipoRecetaServicio}")
	private TipoRecetaServicio servicioTipoReceta;

	private String nombreReceta;
	private String tipo;

	private List<TipoReceta> listaTipoRecetas;
	
	private List<Receta> listaRecetas;
	
	private List<Receta> listaBusqueda;
	
	private int cont;

	private Receta recetaSeleccionada;
     private 	List<Receta> lista;

	public String getNombreReceta() {
		return nombreReceta;
	}

	public void setNombreReceta(String nombreReceta) {
		this.nombreReceta = nombreReceta;
	}

	public String getTipoReceta() {
		return tipo;
	}

	public void setTipoReceta(String tipo) {
		this.tipo = tipo;
	}

	public List<TipoReceta> getListaTipoRecetas() {
		return listaTipoRecetas;
	}

	public void setListaTipoRecetas(List<TipoReceta> listaTipoRecetas) {
		this.listaTipoRecetas = listaTipoRecetas;
	}

	public List<Receta> getListaRecetas() {
		return listaRecetas;
	}

	public void setListaRecetas(List<Receta> listaRecetas) {
		this.listaRecetas = listaRecetas;
	}

	public Receta getRecetaSeleccionada() {
		return recetaSeleccionada;
	}

	public void setRecetaSeleccionada(Receta recetaSeleccionada) {
		this.recetaSeleccionada = recetaSeleccionada;
	}

	public RecetaServicio getServicioReceta() {
		return servicioReceta;
	}

	public void setServicioReceta(RecetaServicio servicioReceta) {
		this.servicioReceta = servicioReceta;
	}

	public TipoRecetaServicio getServicioTipoReceta() {
		return servicioTipoReceta;
	}

	public void setServicioTipoReceta(TipoRecetaServicio servicioTipoReceta) {
		this.servicioTipoReceta = servicioTipoReceta;
	}

	
	@PostConstruct
	public void init() {
		FacesContext context = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
		Usuario usuario = (Usuario) session.getAttribute("usuario");
		if(usuario == null)
		{
			try {
				context.getExternalContext().dispatch("login.xhtml");
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else {
			listaTipoRecetas = getServicioTipoReceta().obtenerTodosLosTiposRecetas();
			listaBusqueda = getServicioReceta().obtenerTodasLasRecetas();
			
			
		}
	}
	

	public String buscar() {

		nombreReceta = getNombreReceta();
		tipo = getTipoReceta();
		if (!nombreReceta.equals("") && !tipo.equals("")) {
			listaBusqueda = servicioReceta.BuscarRecetaPorNombre_Tipo(
					nombreReceta, tipo);
			
		}
		if (!nombreReceta.equals("") && tipo.equals("")) {
			listaBusqueda = servicioReceta.BuscarRecetaPorNombre(nombreReceta);
		}

		if (nombreReceta.equals("") && !tipo.equals("")) {
			listaBusqueda = servicioReceta.BuscarRecetaPorTipo(tipo);
		}
		
		
//		
//		for( int i= 0; i<listaBusqueda.size();i++)
//		{
//			String temporal = listaBusqueda.get(i).getNombreReceta();
//			System.out.println("beanbuscar" + temporal.toString());
//		}
		
//		nombreReceta = "";
//		tipo="Select ";
//		
//		init();
	
//		return "index?faces-redirect=true";
		return "";
	}

	public String verRecetaSeleccionada(String idReceta) {

		FacesContext context = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
		
		session.setAttribute("idReceta", idReceta);
		
		return "verReceta";

	}

	public List<Receta> getListaBusqueda() {
		return listaBusqueda;
	}

	public void setListaBusqueda(List<Receta> listaBusqueda) {
		this.listaBusqueda = listaBusqueda;
	}

	public int getCont() {
		return cont;
	}

	public void setCont(int cont) {
		this.cont = cont;
	}

	public List<Receta> getLista() {
		return lista;
	}

	public void setLista(List<Receta> lista) {
		this.lista = lista;
	}
	
	public String irInsertarReceta()
	{
		FacesContext context = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
		
		session.removeAttribute("idReceta");
		
		return "insertarReceta";
		
	}
	
	public String cerrarSession()
	{
		FacesContext context = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
		session.removeAttribute("usuario");
		return "login";
	}

}
